package com.xiuyi.aiagent.demo.invoke;

// 导入Hutool工具类所需的HTTP和JSON处理类
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.hutool.json.JSONArray;  // 需要显式导入JSONArray

/**
 *  HTTP 接入 AI 大模型
 */
public class HttpAiInvoke {

    public static void main(String[] args) {
        // 从环境变量获取API密钥（需要提前设置DASHSCOPE_API_KEY环境变量）
        String apiKey = TestApiKey.API_KEY;

        // 定义阿里云灵积API的请求地址
        String url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation";

        /* 构建消息列表JSON数组
         * [
         *   {"role": "system", "content": "You are a helpful assistant."},
         *   {"role": "user", "content": "你是谁？"}
         * ]
         */
        // 正确创建JSON数组（注意类型声明）
        JSONArray messages = JSONUtil.createArray();  // 这里返回的是JSONArray类型

        // 添加系统角色消息
        messages.add(JSONUtil.createObj()
                        .put("role", "system")
                        .put("content", "You are a helpful assistant."));

        // 添加用户角色消息
        messages.add(JSONUtil.createObj()
                        .put("role", "user")
                        .put("content", "你是谁？"));

        // 构建完整的请求体JSON结构
        JSONObject requestBody = JSONUtil.createObj()
                // 设置使用的模型名称
                .put("model", "qwen-plus")
                // 构建input字段结构
                .put("input", JSONUtil.createObj().put("messages", messages))
                // 构建parameters字段结构
                .put("parameters", JSONUtil.createObj()
                        .put("result_format", "message"));  // 设置响应格式为message

        // 发送HTTP POST请求并获取响应
        String response = HttpRequest.post(url)  // 创建POST请求
                .header("Authorization", "Bearer " + apiKey)  // 添加认证头
                .header("Content-Type", "application/json")   // 设置内容类型
                .body(requestBody.toString())    // 设置JSON请求体
                .execute()       // 执行请求
                .body();         // 获取响应内容字符串

        // 打印原始响应结果
        System.out.println("API响应内容：");
        System.out.println(response);
    }
}
